【SQL】JOINによるテーブルの結合方法とWhere句による結合方法

您所在的位置:网站首页 left join where条件 【SQL】JOINによるテーブルの結合方法とWhere句による結合方法

【SQL】JOINによるテーブルの結合方法とWhere句による結合方法

2023-10-21 06:56| 来源: 网络整理| 查看: 265

【SQL】JOINによるテーブルの結合方法とWhere句による結合方法

2021/03/26

sql-join-eye

SHARE

ツイート シェア はてブ Google+ Pocket LINE

データベースにアクセスするためのSQLを学ぶ時に

複数のテーブルを結合して情報を取得したい場合どうすれば良いかわからない

と考えたことはないでしょうか。

ここでは、SQLの結合方法をいくつかみていきます。

目次

1 SQLで表同士を結合する方法1.1 内部結合 INNER JOIN1.2 外部結合 LEFT OUTER JOIN1.3 外部結合 RIGHT OUTER JOIN1.4 外部結合 FULL OUTER JOIN1.5 交差結合 CROSS JOIN2 WHERE句のみで内部結合をする方法3 まとめ SQLで表同士を結合する方法

sql-join-01

SQLで表同士を結合するときの種類は5つあります。

内部結合 INNER JOIN

内部結合(INNER JOIN)は最もオーソドックスな結合方法です。

結合するテーブルの条件が一致するレコードのみ出力されます。

下記のようなname、addressというテーブルが二つあるとして、これを結合するSQLを見ていきます。

table name の要素 id name kane 1 sato サトウ 2 saitou サイトウ 3 goto ゴトウ table address の要素 id address tel 1 横浜 01234567 2 川崎 98765432

SQLは下記になります。

1234 select * fromname t1join address t2on t1.id = t2.id;

表示結果は下記のように、id同士が一致した行のみが表示されます。

id name kana address tel 1 sato サトウ 横浜 01234567 2 saitou サイトウ 川崎 98765432 2019.08.14未経験・初心者向け「SQL鬼練11〜INNER JOIN句を使ったテーブル同士の内部結合〜」 外部結合 LEFT OUTER JOIN

外部結合のうち(LEFT OUTER JOIN)もよく使われるSQLです。

この場合、条件式の左側のテーブルの対象レコードは全て表示されます。右側のテーブルは、条件が一致した行のみ表示され、一致しない行の項目にはNULLが入れられます。

下記のようなname、addressというテーブルが二つあるとして、これを結合するSQLを見ていきます。

table name の要素 id name kane 1 sato サトウ 2 saitou サイトウ 3 goto ゴトウ table address の要素 id address tel 1 横浜 01234567 2 川崎 98765432

SQLは下記になります。

1234 select * fromname t1full outer join address t2on t1.id = t2.id;

表示結果は下記のように、2行目までは一致したすべての項目が入っている行と、一致しないカラムにNULLが入った3行目が返されます。

id name kana address tel 1 sato サトウ 横浜 01234567 2 saitou サイトウ 川崎 98765432 3 goto ゴトウ NULL NULL NULL 外部結合 RIGHT OUTER JOIN

外部結合のうち(RIGHT OUTER JOIN)という結合方法もあります。

これは、単純にLEFT OUTER JOINの逆で、条件式の右側にあるテーブルについては条件に一致するデータがすべて取り出されます。

そして、左側のテーブルは、一致する行についてはデータが埋められ、一致しない行にはNULLが埋められます。

下記のようなname、addressというテーブルが二つあるとして、これを結合するSQLを見ていきます。

table name の要素 id name kane 1 sato サトウ 2 saitou サイトウ table address の要素 id address tel 1 横浜 01234567 2 川崎 98765432 3 浅草 10293847

SQLは下記になります。

1234 select * fromname t1right outer join address t2on t1.id = t2.id;

表示結果は下記のように、2行目までは一致したすべての項目が入っている行と、一致しないカラムにNULLが入った3行目が返されます。

id name kana address tel 1 sato サトウ 横浜 01234567 2 saitou サイトウ 川崎 98765432 3 NULL NULL 浅草 10293847

 

外部結合 FULL OUTER JOIN

FULL OUTER JOINはLEFT OUTER JOINとRIGHT OUTER JOINを同時に行うイメージです。

一致する行に加え、条件式の左側にしかない行は右側にNULLが入った行が返される。そして、右側にしかない行は左側にNULLが入った行が返されます。

上記と同様、下記の二つのテーブルを結合する過程を見ていきます。

table name の要素 id name kane 1 sato サトウ 2 saitou サイトウ 3 goto ゴトウ table address の要素 id address tel 1 横浜 01234567 2 川崎 98765432 4 浅草 10293847

SQLは下記になります。

1234 select * fromname t1full outer join address t2on t1.id = t2.id;

表示結果は下記のように、2行目までは一致したすべての項目が返されます。そして、条件式の右側の項目にNULLが埋められた行と左側の項目にNULLがうめられた行が返されます。

上記の処理結果は下記の通りです。

id name kana address tel 1 sato サトウ 横浜 01234567 2 saitou サイトウ 川崎 98765432 3 goto ゴトウ NULL NULL 4 NULL NULL 浅草 10293847 メモFULL OUTER JOINはmysqlではエラーになります。 交差結合 CROSS JOIN

交差結合(CROSS JOIN)は特殊な結合です。

この結合は、二つのテーブルのすべての掛け合わせた行が返されます。

上記と同様、下記の二つのテーブルを結合する過程を見ていきます。

table name の要素 id name kane 1 sato サトウ 2 saitou サイトウ 3 goto ゴトウ table address の要素 id address tel 1 横浜 01234567 2 川崎 98765432

SQLは下記になります。

123 select * fromnamecross join address

表示結果は下記のように、nameテーブルとaddressテーブルの全ての組み合わせが結果として帰ります。

上記の処理結果は下記の通りです。

id name kana address tel 1 sato サトウ 横浜 01234567 1 sato サトウ 川崎 98765432 2 saitou サイトウ 横浜 01234567 2 saitou サイトウ 川崎 98765432 3 goto ゴトウ 横浜 01234567 3 goto ゴトウ 川崎 98765432 WHERE句のみで内部結合をする方法

sql-join-02

結合の際に、JOIN句を使わずにWHERE句のみで行うことができます。

機能としては同じ動作をしますが、WHERE句のみで完結します。しかし、結合条件が多かったりテーブル数が多くなると結合条件がどこなのかが分かりにくくなることがあります。

下記のようなname、addressというテーブルが二つあるとして、これを結合するSQLを見ていきます。

table name の要素 id name kane 1 sato サトウ 2 saitou サイトウ 3 goto ゴトウ table address の要素 id address tel 1 横浜 01234567 2 川崎 98765432

SQLは下記になります。

123 select * fromname t1,address t2where t1.id = t2.id

表示結果は下記のように、2行目までは一致したすべての項目が入っている行と、一致しないカラムにNULLが入った3行目が返されます。

id name kana address tel 1 sato サトウ 横浜 01234567 2 saitou サイトウ 川崎 98765432 2019.08.06未経験・初心者向け「SQL鬼練1〜4」 まとめ

このように、結合の方法をいくつか見てきました。

SQLは意外と書き方の種類も多く、結合の順番などでパフォーマンスも変わることがあります。

できる限り多くの方法を知っておくのが良いです。

この記事がお役立ちいただければ幸いです。

ウェブカツは「年収1000万円」を目指すフリーランスITエンジニアを育成するオンライン最大級のプログラミングスクールとして、元医師やBIG4税理士法人会計士など高学歴高経歴な方から、中卒土方、40代主婦、海外在住者など様々な方が通われています。 現役ITエンジニアとして活躍し、富裕層でプロのファイナンシャルプランナーでもある顧問「かずきち」が教える【フリーランスITエンジニアになって10年で1億の資産を築く方法】など他のプログラミングスクールとは全く異なり、「転職をゴール」とはせずに「会社に依存せずに外で稼げる力」を身につけさせています。 ウェブカツ!!未経験からでも目指せるプログラマーへの道。 ウェブカツ!!からプログラミング初心者でも経験者でも楽しめる漫画「はたらくプログラミング」が発売されました! KADOKAWAより全国書店で発売中です! はたらくプログラミングbyプログラミングスクール「ウェブカツ!!」 ウェブカツ!!から「プログラミング未経験の文系が独学で年収1000万ITエンジニアになるための入門書」が秀和システムより全国書店で発売中! 関連 SHARE ツイート シェア はてブ Google+ Pocket LINE

CATEGORY :

PHP・MySQL部の学習内容 ウェブカツ学習内容 【入門】【初心者】URLやポート番号ってなに?

【入門】【初心者】URLやポート番号ってなに?

ソースコード掲載:Lesson14〜15「実践!ログインシステムを作ってみよう!」

ソースコード掲載:Lesson14〜15「実践!ログインシステムを作ってみよう!」

ソースコード掲載:Lesson17「実践!画像アップローダーを作ってみよう!」

ソースコード掲載:Lesson17「実践!画像アップローダーを作ってみよう!」

ソースコード掲載:Lesson11〜Lesson13「実践!ユーザー登録システムを作ってみよう!」

ソースコード掲載:Lesson11〜Lesson13「実践!ユーザー登録システムを作ってみよう!」

プログラミング初心者向け「プリペアドステートメントとプレースホルダとクエリー」まとめ

プログラミング初心者向け「プリペアドステートメントとプレースホルダとクエリー」まとめ

ソースコード掲載:Lesson16「実践!メールフォームを作ってみよう!」

ソースコード掲載:Lesson16「実践!メールフォームを作ってみよう!」

この記事を書いた人 ウェブカツ!!編集部

完全初心者からフリーランスITエンジニアへと育成しているフリーランス向けオンラインプログラミングスクールとしては業界初で最大級のスクール。 2万人を超える生徒が学ばれ、1000万円プレーヤーを数多く輩出。 生徒には元医師やBIG4税理士法人会計士など高学歴高経歴な方から、中卒土方、40代主婦、海外在住者など様々な方が通われている。 また、数多くのスクールとは全く異なり「転職はあくまで将来への通過点である」「会社でしか生きられない力より会社の外で稼げる力を培う」 との理念を持った教育を行い、講師・運営陣には元野村総研のSEや京大院卒エンジニアが携わっている。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3